package com.unknowpupil.design.relation;

/**
 * @Description: 依赖(Dependency)
 * <p>
 *     赖关系，是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。
 *
 *     使用关系：
 *        一般情况下，依赖关系在Java语言中体现为局域变量、方法的形参，或者对静态方法的调用
 *
 *        依赖关系用带箭头的虚线表示，由依赖的一方指向被依赖的一方
 * </p>
 * @Author: <a> w10g </a>
 * @CreateDate: Create in 2020/4/24 11:30
 * @Classname: SchemaDependency
 * @Version: 1.0
 */
public class SchemaDependency {


    /**
     * 菜刀
     */
    static class Kinfe {
        public  void cutting(String name) {
            System.out.println("切" + name);
        }
    }

    /**
     *  厨师
     *  厨师依赖菜刀
     */
    class Chef {
        // Chef 方法依赖 Kinfe
        public void cutting(Kinfe kinfe, String vegetables) {
            kinfe.cutting(vegetables);
        }

    }

    public static void main(String[] args) {
        SchemaDependency schemaDependency = new SchemaDependency();
        Chef chef = schemaDependency.new Chef();

        Kinfe kinfe = new Kinfe();

        chef.cutting(kinfe,"牛肉");


    }

    /**
     * =========另一种方式
     * =======
     * ====
     *  依赖关系(Dependency) 是一种使用关系，特定事物的改变有可能会影响到使用该事物的其他事物，在需要表示一个事物使用另一个事物时使用依赖关系
     *  大多数情况下，依 赖关系体现在某个类的方法使用另一个类的对象作为参数。
     * */
    public class Screwdriver {    //螺丝刀，作为人类的工具，是用来被人类使用的
    }
    public class Person{
        public void screw(Screwdriver src){    //拧螺丝，需使用螺丝刀
        }
    }
    /**
     * 依赖关系有如下三种情况：
     * 1、A类是B类中的（某中方法的）局部变量；
     *
     * 2、A类是B类方法当中的一个参数；
     *
     * 3、A类向B类发送消息，从而影响B类发生变化；
     */

}
